'use strict';

const { ACTION_TYPE } = require('../constants/actionType');

// 获取Controller类
const Controller = require('egg').Controller;

class TagController extends Controller {
  async create() {
    const { ctx } = this;
    const { userId } = ctx.helper.jsonToHump(ctx.decode);
    const { tagName } = ctx.request.body;
    const tagId = await ctx.service.tag.create(userId, tagName);
    await ctx.service.record.create(userId, ACTION_TYPE.CreateTag, `标签ID：${tagId}，标签名：${tagName}`);
    ctx.body = ctx.helper.formatResponse({ tagId }, 200, '新增标签成功');
  }

  async addTag() {
    const { ctx } = this;
    const { userId } = ctx.helper.jsonToHump(ctx.decode);
    const { picId, tagId } = ctx.request.body;
    console.log(picId, tagId);
    const success = await ctx.service.tag.addTag(picId, tagId);
    await ctx.service.record.create(userId, ACTION_TYPE.AddTag, `标签ID：${tagId}，图片ID：${picId}`);
    ctx.body = ctx.helper.formatResponse({ success }, 200, '图片添加标签成功');
  }

  async delTag() {
    const { ctx } = this;
    const { userId } = ctx.helper.jsonToHump(ctx.decode);
    const { picId, tagId } = ctx.request.query;
    const success = await ctx.service.tag.delTag(picId, tagId);
    await ctx.service.record.create(userId, ACTION_TYPE.DeleteTag, `标签ID：${tagId}，图片ID：${picId}`);
    ctx.body = ctx.helper.formatResponse({ success }, 200, '图片去除标签成功');
  }

  async edit() {
    const { ctx } = this;
    const { userId } = ctx.helper.jsonToHump(ctx.decode);
    const { tagId, tagName } = ctx.request.body;
    const success = await ctx.service.tag.edit(userId, tagId, tagName);
    await ctx.service.record.create(userId, ACTION_TYPE.AddTag, `标签ID：${tagId}，新标签名：${tagName}`);
    ctx.body = ctx.helper.formatResponse({ success }, 200, '修改标签成功');
  }


  async index() {
    const { ctx } = this;
    const { userId } = ctx.helper.jsonToHump(ctx.decode);
    const list = await ctx.service.tag.index(userId);
    ctx.body = ctx.helper.formatResponse({ list: ctx.helper.jsonToHump(list), total: list.length }, 200, '获取标签列表成功');
  }

  async destory() {
    const { ctx } = this;
    const { userId } = ctx.helper.jsonToHump(ctx.decode);
    const { tagId } = ctx.request.query;
    const success = await ctx.service.tag.destory(tagId);
    await ctx.service.record.create(userId, ACTION_TYPE.DeleteTag, `标签ID：${tagId}`);
    ctx.body = ctx.helper.formatResponse({ success }, 200, '删除标签成功');
  }
}

module.exports = TagController;
